// ActionScript file


import flash.utils.ByteArray;

import model.PropertyInfo;

import mx.controls.Alert;

//初始化socket链接
public function initSocket():void
{
	SOCKET=new Socket();
	SOCKET.addEventListener(Event.CLOSE, closeHandler); //监听关闭
	SOCKET.addEventListener(Event.CONNECT, connectHandler); //监听链接成功
	SOCKET.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); //监听io异常
	SOCKET.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); //监听securityError
	SOCKET.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); //监听接受socket回传回来的数据
	SOCKET.connect("127.0.0.1", 8888); //socket初始化链接地址
	addEventListener("recieved", recievedData);
}

public function testEv(name:String, name2:String, sex:Number):void
{
	Alert.show(name + ":" + name2 + ":" + sex);
}



public function testEval(name:String, sex:Number):void
{
	Alert.show(name + ":" + sex);
}

public function closeHandler(event:Event):void
{
	trace("连接关闭");
}

public function connectHandler(event:Event):void
{
	trace("连接成功");
//	var result:Object={id: 10001, "passports": "阿斯顿发-as1234"};
//	var user:User=new User();
//	//user.id=100;
//	user.passport="安德斯";
//	user.password="";
//	var results:PropertyInfo=new PropertyInfo();
//	results.code=1;
//	results.data=user;
//	sendSocketByData(results);
	//	var map:HashMap=new HashMap2();
	//	map.puts("id", 1000);
	//	map.puts("passport", "阿斯顿发");
	//	map.puts("password", "12323asd");
	//	var map2:Object=new Object();
	//	map2["id"]=1001;
	//	map2["passport"]="阿斯顿发1-1234asdf";
}

public function ioErrorHandler(event:IOErrorEvent):void
{
	trace("ioErrorHandler信息： " + event);
}

public function securityErrorHandler(event:SecurityErrorEvent):void
{
	trace("securityErrorHandler信息: " + event);
}

public function socketDataHandler(event:ProgressEvent):void
{
	trace("接收数据");
	obj=SOCKET.readObject();
	dispatchEvent(new Event("recieved"));
}


public function sendSocketByData(results:PropertyInfo):void
{
	var message:ByteArray=new ByteArray();
	//	message.objectEncoding = ObjectEncoding.AMF3;
	message.writeObject(results);
	SOCKET.writeBytes(message);
	SOCKET.flush();
}

public function sendSocket(msg:String):void
{
//	var message:ByteArray=new ByteArray();
//	var user:User=new User();
//	user.id=100;
//	user.passport="安德斯";
//	user.password="asdf";
//	var user2:User=new User();
//	user2.id=101;
//	user2.passport="安德斯1";
//	user2.password="asdf1";
//	var array:Array=new Array();
//	array.push(user);
//	array.push(user2);
//	var map:HashMap=new HashMap2();
//	map.put("id", 1000);
//	map.put("passport", "阿斯顿发");
//	map.put("password", "12323asd");
//	message.writeObject(map);
//	SOCKET.writeBytes(message);
//	SOCKET.flush();
}

//一种处理回传数据的方式，对应的是arrayList
public function recievedData(evt:Event):void
{
	//trace(obj as ArrayCollection);

	var result:PropertyInfo=obj as PropertyInfo;
	var eventType:String=result.eventType;
//新的方法，通过event监听来做
	dispatchEvent(new Event(eventType));
//老的方法，通过eval来做
//	var dataProperties:Array=result.dataProperties;
//	dataProperties.unshift(result);
//	evalPropertyByFuncName(funcName, dataProperties);

//	var code:int=result.code;
//	var data:Object=result.data;
//	var resultMap:HashMap=new HashMap();
//	for (var entry:Object in data)
//	{
//		trace(entry);
//		var key:String=entry.toString();
//		resultMap.puts(key, data[key]);
//	}
//	trace(code, resultMap.gets("str"));
//	var objCol:ArrayCollection=obj as ArrayCollection;
//	if (objCol != null)
//	{
//		if (objCol.length)
//		{
//			for (var i:int=0; i < objCol.length; i++)
//			{
//				var object:Object=objCol.getItemAt(i) as Object;
//				trace(object.id, object.passport, object.password);
//			}
//		}
//		trace("数据长度Col:" + objCol.length);
//	}
//	else
//	{
//		var objAry:Array=obj as Array;
//		if (objAry != null)
//		{
//			if (objAry.length)
//			{
//				for (var i:int=0; i < objAry.length; i++)
//				{
//					trace(objAry[i].id, objAry[i].passport, objAry[i].password);
//				}
//			}
//			trace("数据长度Ary:" + objAry.length);
//		}
//		else
//		{
//			var objmap:Object=obj as Object;
//			if (objmap != null)
//			{
//				switch (obj.Event)
//				{
//					case "移动":
//						trace("把玩家:" + obj.user + " 移动到" + obj.x + "," + obj.y);
//						break;
//					case "人物移动":
//						trace("系统信息");
//						break;
//					default:
//						break;
//				}
//			}
//		}
//	}

	//var m:MouseEvent=new MouseEvent(MouseEvent.DOUBLE_CLICK);
	//this.dispatchEvent(m);
	//Alert.show(type + ":" + value);
}